home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / include / asm-frv / mb93493-regs.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  12.5 KB  |  282 lines

  1. /* mb93493-regs.h: MB93493 companion chip registers
  2.  *
  3.  * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
  4.  * Written by David Howells (dhowells@redhat.com)
  5.  *
  6.  * This program is free software; you can redistribute it and/or
  7.  * modify it under the terms of the GNU General Public License
  8.  * as published by the Free Software Foundation; either version
  9.  * 2 of the License, or (at your option) any later version.
  10.  */
  11.  
  12. #ifndef _ASM_MB93493_REGS_H
  13. #define _ASM_MB93493_REGS_H
  14.  
  15. #include <asm/mb-regs.h>
  16. #include <asm/mb93493-irqs.h>
  17.  
  18. #define __addr_MB93493(X)    ((volatile unsigned long *)(__region_CS3 + (X)))
  19. #define __get_MB93493(X)    ({ *(volatile unsigned long *)(__region_CS3 + (X)); })
  20.  
  21. #define __set_MB93493(X,V)                        \
  22. do {                                    \
  23.     *(volatile unsigned long *)(__region_CS3 + (X)) = (V); mb();    \
  24. } while(0)
  25.  
  26. #define __get_MB93493_STSR(X)    __get_MB93493(0x3c0 + (X) * 4)
  27. #define __set_MB93493_STSR(X,V)    __set_MB93493(0x3c0 + (X) * 4, (V))
  28. #define MB93493_STSR_EN
  29.  
  30. #define __addr_MB93493_IQSR(X)    __addr_MB93493(0x3d0 + (X) * 4)
  31. #define __get_MB93493_IQSR(X)    __get_MB93493(0x3d0 + (X) * 4)
  32. #define __set_MB93493_IQSR(X,V)    __set_MB93493(0x3d0 + (X) * 4, (V))
  33.  
  34. #define __get_MB93493_DQSR(X)    __get_MB93493(0x3e0 + (X) * 4)
  35. #define __set_MB93493_DQSR(X,V)    __set_MB93493(0x3e0 + (X) * 4, (V))
  36.  
  37. #define __get_MB93493_LBSER()    __get_MB93493(0x3f0)
  38. #define __set_MB93493_LBSER(V)    __set_MB93493(0x3f0, (V))
  39.  
  40. #define MB93493_LBSER_VDC    0x00010000
  41. #define MB93493_LBSER_VCC    0x00020000
  42. #define MB93493_LBSER_AUDIO    0x00040000
  43. #define MB93493_LBSER_I2C_0    0x00080000
  44. #define MB93493_LBSER_I2C_1    0x00100000
  45. #define MB93493_LBSER_USB    0x00200000
  46. #define MB93493_LBSER_GPIO    0x00800000
  47. #define MB93493_LBSER_PCMCIA    0x01000000
  48.  
  49. #define __get_MB93493_LBSR()    __get_MB93493(0x3fc)
  50. #define __set_MB93493_LBSR(V)    __set_MB93493(0x3fc, (V))
  51.  
  52. /*
  53.  * video display controller
  54.  */
  55. #define __get_MB93493_VDC(X)    __get_MB93493(MB93493_VDC_##X)
  56. #define __set_MB93493_VDC(X,V)    __set_MB93493(MB93493_VDC_##X, (V))
  57.  
  58. #define MB93493_VDC_RCURSOR    0x140    /* cursor position */
  59. #define MB93493_VDC_RCT1    0x144    /* cursor colour 1 */
  60. #define MB93493_VDC_RCT2    0x148    /* cursor colour 2 */
  61. #define MB93493_VDC_RHDC    0x150    /* horizontal display period */
  62. #define MB93493_VDC_RH_MARGINS    0x154    /* horizontal margin sizes */
  63. #define MB93493_VDC_RVDC    0x158    /* vertical display period */
  64. #define MB93493_VDC_RV_MARGINS    0x15c    /* vertical margin sizes */
  65. #define MB93493_VDC_RC        0x170    /* VDC control */
  66. #define MB93493_VDC_RCLOCK    0x174    /* clock divider, DMA req delay */
  67. #define MB93493_VDC_RBLACK    0x178    /* black insert sizes */
  68. #define MB93493_VDC_RS        0x17c    /* VDC status */
  69.  
  70. #define __addr_MB93493_VDC_BCI(X)  ({ (volatile unsigned long *)(__region_CS3 + 0x000 + (X)); })
  71. #define __addr_MB93493_VDC_TPO(X)  (__region_CS3 + 0x1c0 + (X))
  72.  
  73. #define VDC_TPO_WIDTH        32
  74.  
  75. #define VDC_RC_DSR        0x00000080    /* VDC master reset */
  76.  
  77. #define VDC_RS_IT        0x00060000    /* interrupt indicators */
  78. #define VDC_RS_IT_UNDERFLOW    0x00040000    /* - underflow event */
  79. #define VDC_RS_IT_VSYNC        0x00020000    /* - VSYNC event */
  80. #define VDC_RS_DFI        0x00010000    /* current interlace field number */
  81. #define VDC_RS_DFI_TOP        0x00000000    /* - top field */
  82. #define VDC_RS_DFI_BOTTOM    0x00010000    /* - bottom field */
  83. #define VDC_RS_DCSR        0x00000010    /* cursor state */
  84. #define VDC_RS_DCM        0x00000003    /* display mode */
  85. #define VDC_RS_DCM_DISABLED    0x00000000    /* - display disabled */
  86. #define VDC_RS_DCM_STOPPED    0x00000001    /* - VDC stopped */
  87. #define VDC_RS_DCM_FREERUNNING    0x00000002    /* - VDC free-running */
  88. #define VDC_RS_DCM_TRANSFERRING    0x00000003    /* - data being transferred to VDC */
  89.  
  90. /*
  91.  * video capture controller
  92.  */
  93. #define __get_MB93493_VCC(X)    __get_MB93493(MB93493_VCC_##X)
  94. #define __set_MB93493_VCC(X,V)    __set_MB93493(MB93493_VCC_##X, (V))
  95.  
  96. #define MB93493_VCC_RREDUCT    0x104    /* reduction rate */
  97. #define MB93493_VCC_RHY        0x108    /* horizontal brightness filter coefficients */
  98. #define MB93493_VCC_RHC        0x10c    /* horizontal colour-difference filter coefficients */
  99. #define MB93493_VCC_RHSIZE    0x110    /* horizontal cycle sizes */
  100. #define MB93493_VCC_RHBC    0x114    /* horizontal back porch size */
  101. #define MB93493_VCC_RVCC    0x118    /* vertical capture period */
  102. #define MB93493_VCC_RVBC    0x11c    /* vertical back porch period */
  103. #define MB93493_VCC_RV        0x120    /* vertical filter coefficients */
  104. #define MB93493_VCC_RDTS    0x128    /* DMA transfer size */
  105. #define MB93493_VCC_RDTS_4B    0x01000000    /* 4-byte transfer */
  106. #define MB93493_VCC_RDTS_32B    0x03000000    /* 32-byte transfer */
  107. #define MB93493_VCC_RDTS_SHIFT    24
  108. #define MB93493_VCC_RCC        0x130    /* VCC control */
  109. #define MB93493_VCC_RIS        0x134    /* VCC interrupt status */
  110.  
  111. #define __addr_MB93493_VCC_TPI(X)  (__region_CS3 + 0x180 + (X))
  112.  
  113. #define VCC_RHSIZE_RHCC        0x000007ff
  114. #define VCC_RHSIZE_RHCC_SHIFT    0
  115. #define VCC_RHSIZE_RHTCC    0x0fff0000
  116. #define VCC_RHSIZE_RHTCC_SHIFT    16
  117.  
  118. #define VCC_RVBC_RVBC        0x00003f00
  119. #define VCC_RVBC_RVBC_SHIFT    8
  120.  
  121. #define VCC_RREDUCT_RHR        0x07ff0000
  122. #define VCC_RREDUCT_RHR_SHIFT    16
  123. #define VCC_RREDUCT_RVR        0x000007ff
  124. #define VCC_RREDUCT_RVR_SHIFT    0
  125.  
  126. #define VCC_RCC_CE        0x00000001    /* VCC enable */
  127. #define VCC_RCC_CS        0x00000002    /* request video capture start */
  128. #define VCC_RCC_CPF        0x0000000c    /* pixel format */
  129. #define VCC_RCC_CPF_YCBCR_16    0x00000000    /* - YCbCr 4:2:2 16-bit format */
  130. #define VCC_RCC_CPF_RGB        0x00000004    /* - RGB 4:4:4 format */
  131. #define VCC_RCC_CPF_YCBCR_24    0x00000008    /* - YCbCr 4:2:2 24-bit format */
  132. #define VCC_RCC_CPF_BT656    0x0000000c    /* - ITU R-BT.656 format */
  133. #define VCC_RCC_CPF_SHIFT    2
  134. #define VCC_RCC_CSR        0x00000080    /* request reset */
  135. #define VCC_RCC_HSIP        0x00000100    /* HSYNC polarity */
  136. #define VCC_RCC_HSIP_LOACT    0x00000000    /* - low active */
  137. #define VCC_RCC_HSIP_HIACT    0x00000100    /* - high active */
  138. #define VCC_RCC_VSIP        0x00000200    /* VSYNC polarity */
  139. #define VCC_RCC_VSIP_LOACT    0x00000000    /* - low active */
  140. #define VCC_RCC_VSIP_HIACT    0x00000200    /* - high active */
  141. #define VCC_RCC_CIE        0x00000800    /* interrupt enable */
  142. #define VCC_RCC_CFP        0x00001000    /* RGB pixel packing */
  143. #define VCC_RCC_CFP_4TO3    0x00000000    /* - pack 4 pixels into 3 words */
  144. #define VCC_RCC_CFP_1TO1    0x00001000    /* - pack 1 pixel into 1 words */
  145. #define VCC_RCC_CSM        0x00006000    /* interlace specification */
  146. #define VCC_RCC_CSM_ONEPASS    0x00002000    /* - non-interlaced */
  147. #define VCC_RCC_CSM_INTERLACE    0x00004000    /* - interlaced */
  148. #define VCC_RCC_CSM_SHIFT    13
  149. #define VCC_RCC_ES        0x00008000    /* capture start polarity */
  150. #define VCC_RCC_ES_NEG        0x00000000    /* - negative edge */
  151. #define VCC_RCC_ES_POS        0x00008000    /* - positive edge */
  152. #define VCC_RCC_IFI        0x00080000    /* inferlace field evaluation reverse */
  153. #define VCC_RCC_FDTS        0x00300000    /* interlace field start */
  154. #define VCC_RCC_FDTS_3_8    0x00000000    /* - 3/8 of horizontal entire cycle */
  155. #define VCC_RCC_FDTS_1_4    0x00100000    /* - 1/4 of horizontal entire cycle */
  156. #define VCC_RCC_FDTS_7_16    0x00200000    /* - 7/16 of horizontal entire cycle */
  157. #define VCC_RCC_FDTS_SHIFT    20
  158. #define VCC_RCC_MOV        0x00400000    /* test bit - always set to 1 */
  159. #define VCC_RCC_STP        0x00800000    /* request video capture stop */
  160. #define VCC_RCC_TO        0x01000000    /* input during top-field only */
  161.  
  162. #define VCC_RIS_VSYNC        0x01000000    /* VSYNC interrupt */
  163. #define VCC_RIS_OV        0x02000000    /* overflow interrupt */
  164. #define VCC_RIS_BOTTOM        0x08000000    /* interlace bottom field */
  165. #define VCC_RIS_STARTED        0x10000000    /* capture started */
  166.  
  167. /*
  168.  * I2C
  169.  */
  170. #define MB93493_I2C_BSR     0x340        /* bus status */
  171. #define MB93493_I2C_BCR        0x344        /* bus control */
  172. #define MB93493_I2C_CCR        0x348        /* clock control */
  173. #define MB93493_I2C_ADR        0x34c        /* address */
  174. #define MB93493_I2C_DTR        0x350        /* data */
  175. #define MB93493_I2C_BC2R    0x35c        /* bus control 2 */
  176.  
  177. #define __addr_MB93493_I2C(port,X)   (__region_CS3 + MB93493_I2C_##X + ((port)*0x20))
  178. #define __get_MB93493_I2C(port,X)    __get_MB93493(MB93493_I2C_##X + ((port)*0x20))
  179. #define __set_MB93493_I2C(port,X,V)  __set_MB93493(MB93493_I2C_##X + ((port)*0x20), (V))
  180.  
  181. #define I2C_BSR_BB    (1 << 7)
  182.  
  183. /*
  184.  * audio controller (I2S) registers
  185.  */
  186. #define __get_MB93493_I2S(X)    __get_MB93493(MB93493_I2S_##X)
  187. #define __set_MB93493_I2S(X,V)    __set_MB93493(MB93493_I2S_##X, (V))
  188.  
  189. #define MB93493_I2S_ALDR    0x300        /* L-channel data */
  190. #define MB93493_I2S_ARDR    0x304        /* R-channel data */
  191. #define MB93493_I2S_APDR    0x308        /* 16-bit packed data */
  192. #define MB93493_I2S_AISTR    0x310        /* status */
  193. #define MB93493_I2S_AICR    0x314        /* control */
  194.  
  195. #define __addr_MB93493_I2S_ALDR(X)    (__region_CS3 + MB93493_I2S_ALDR + (X))
  196. #define __addr_MB93493_I2S_ARDR(X)    (__region_CS3 + MB93493_I2S_ARDR + (X))
  197. #define __addr_MB93493_I2S_APDR(X)    (__region_CS3 + MB93493_I2S_APDR + (X))
  198. #define __addr_MB93493_I2S_ADR(X)    (__region_CS3 + 0x320 + (X))
  199.  
  200. #define I2S_AISTR_OTST        0x00000003    /* status of output data transfer */
  201. #define I2S_AISTR_OTR        0x00000010    /* output transfer request pending */
  202. #define I2S_AISTR_OUR        0x00000020    /* output FIFO underrun detected */
  203. #define I2S_AISTR_OOR        0x00000040    /* output FIFO overrun detected */
  204. #define I2S_AISTR_ODS        0x00000100    /* output DMA transfer size */
  205. #define I2S_AISTR_ODE        0x00000400    /* output DMA transfer request enable */
  206. #define I2S_AISTR_OTRIE        0x00001000    /* output transfer request interrupt enable */
  207. #define I2S_AISTR_OURIE        0x00002000    /* output FIFO underrun interrupt enable */
  208. #define I2S_AISTR_OORIE        0x00004000    /* output FIFO overrun interrupt enable */
  209. #define I2S_AISTR__OUT_MASK    0x00007570
  210. #define I2S_AISTR_ITST        0x00030000    /* status of input data transfer */
  211. #define I2S_AISTR_ITST_SHIFT    16
  212. #define I2S_AISTR_ITR        0x00100000    /* input transfer request pending */
  213. #define I2S_AISTR_IUR        0x00200000    /* input FIFO underrun detected */
  214. #define I2S_AISTR_IOR        0x00400000    /* input FIFO overrun detected */
  215. #define I2S_AISTR_IDS        0x01000000    /* input DMA transfer size */
  216. #define I2S_AISTR_IDE        0x04000000    /* input DMA transfer request enable */
  217. #define I2S_AISTR_ITRIE        0x10000000    /* input transfer request interrupt enable */
  218. #define I2S_AISTR_IURIE        0x20000000    /* input FIFO underrun interrupt enable */
  219. #define I2S_AISTR_IORIE        0x40000000    /* input FIFO overrun interrupt enable */
  220. #define I2S_AISTR__IN_MASK    0x75700000
  221.  
  222. #define I2S_AICR_MI        0x00000001    /* mono input requested */
  223. #define I2S_AICR_AMI        0x00000002    /* relation between LRCKI/FS1 and SDI */
  224. #define I2S_AICR_LRI        0x00000004    /* function of LRCKI pin */
  225. #define I2S_AICR_SDMI        0x00000070    /* format of input audio data */
  226. #define I2S_AICR_SDMI_SHIFT    4
  227. #define I2S_AICR_CLI        0x00000080    /* input FIFO clearing control */
  228. #define I2S_AICR_IM        0x00000300    /* input state control */
  229. #define I2S_AICR_IM_SHIFT    8
  230. #define I2S_AICR__IN_MASK    0x000003f7
  231. #define I2S_AICR_MO        0x00001000    /* mono output requested */
  232. #define I2S_AICR_AMO        0x00002000    /* relation between LRCKO/FS0 and SDO */
  233. #define I2S_AICR_AMO_SHIFT    13
  234. #define I2S_AICR_LRO        0x00004000    /* function of LRCKO pin */
  235. #define I2S_AICR_SDMO        0x00070000    /* format of output audio data */
  236. #define I2S_AICR_SDMO_SHIFT    16
  237. #define I2S_AICR_CLO        0x00080000    /* output FIFO clearing control */
  238. #define I2S_AICR_OM        0x00100000    /* output state control */
  239. #define I2S_AICR__OUT_MASK    0x001f7000
  240. #define I2S_AICR_DIV        0x03000000    /* frequency division rate */
  241. #define I2S_AICR_DIV_SHIFT    24
  242. #define I2S_AICR_FL        0x20000000    /* frame length */
  243. #define I2S_AICR_FS        0x40000000    /* frame sync method */
  244. #define I2S_AICR_ME        0x80000000    /* master enable */
  245.  
  246. /*
  247.  * PCMCIA
  248.  */
  249. #define __addr_MB93493_PCMCIA(X)  ((volatile unsigned long *)(__region_CS5 + (X)))
  250.  
  251. /*
  252.  * GPIO
  253.  */
  254. #define __get_MB93493_GPIO_PDR(X)    __get_MB93493(0x380 + (X) * 0xc0)
  255. #define __set_MB93493_GPIO_PDR(X,V)    __set_MB93493(0x380 + (X) * 0xc0, (V))
  256.  
  257. #define __get_MB93493_GPIO_GPDR(X)    __get_MB93493(0x384 + (X) * 0xc0)
  258. #define __set_MB93493_GPIO_GPDR(X,V)    __set_MB93493(0x384 + (X) * 0xc0, (V))
  259.  
  260. #define __get_MB93493_GPIO_SIR(X)    __get_MB93493(0x388 + (X) * 0xc0)
  261. #define __set_MB93493_GPIO_SIR(X,V)    __set_MB93493(0x388 + (X) * 0xc0, (V))
  262.  
  263. #define __get_MB93493_GPIO_SOR(X)    __get_MB93493(0x38c + (X) * 0xc0)
  264. #define __set_MB93493_GPIO_SOR(X,V)    __set_MB93493(0x38c + (X) * 0xc0, (V))
  265.  
  266. #define __get_MB93493_GPIO_PDSR(X)    __get_MB93493(0x390 + (X) * 0xc0)
  267. #define __set_MB93493_GPIO_PDSR(X,V)    __set_MB93493(0x390 + (X) * 0xc0, (V))
  268.  
  269. #define __get_MB93493_GPIO_PDCR(X)    __get_MB93493(0x394 + (X) * 0xc0)
  270. #define __set_MB93493_GPIO_PDCR(X,V)    __set_MB93493(0x394 + (X) * 0xc0, (V))
  271.  
  272. #define __get_MB93493_GPIO_INTST(X)    __get_MB93493(0x398 + (X) * 0xc0)
  273. #define __set_MB93493_GPIO_INTST(X,V)    __set_MB93493(0x398 + (X) * 0xc0, (V))
  274.  
  275. #define __get_MB93493_GPIO_IEHL(X)    __get_MB93493(0x39c + (X) * 0xc0)
  276. #define __set_MB93493_GPIO_IEHL(X,V)    __set_MB93493(0x39c + (X) * 0xc0, (V))
  277.  
  278. #define __get_MB93493_GPIO_IELH(X)    __get_MB93493(0x3a0 + (X) * 0xc0)
  279. #define __set_MB93493_GPIO_IELH(X,V)    __set_MB93493(0x3a0 + (X) * 0xc0, (V))
  280.  
  281. #endif /* _ASM_MB93493_REGS_H */
  282.